package public

import (
	"dc-go/global"
	"dc-go/model"
	"errors"

	"go.uber.org/zap"
)

type ServiceDb struct{}

type dataInterface interface {
	LoadData() (err error)
}

var migrateList = []interface{}{
	model.SysUser{},
	model.SysRole{},
	model.SysUserOrgRole{},
	model.SysMenu{},
	model.SysRoleMenu{},
	model.SysApi{},
	model.SysRoleApi{},
	model.SysDict{},
	model.SysConfigBackend{},
	model.SysConfigFrontend{},
	model.SysLogLogin{},
	model.SysLogOperation{},
	model.SysUserOnline{},
}

// var dataList = []dataInterface{
// 	data.SysUser,
// 	data.SysRole,
// 	data.SysUserRole,
// 	data.SysMenu,
// 	data.SysRoleMenu,
// 	data.SysApi,
// 	data.SysRoleApi,
// 	data.SysDept,
// 	data.SysDeptUser,
// 	data.SysDict,
// 	data.SysConfigBackend,
// 	data.SysConfigFrontend,
// }

func (s *ServiceDb) InitDb() error {
	err := global.DcDb.AutoMigrate(migrateList...)
	if err != nil {
		global.DcDb = nil
		global.DcLogger.Error("迁移数据库失败！", zap.Any("err", err))
		return errors.New("迁移数据库失败：" + err.Error())
	}

	// for _, v := range dataList {
	// 	err = v.LoadData()
	// 	if err != nil {
	// 		return err
	// 	}
	// }
	return nil
}
